package objet;

import interfaces.XMLRMIField;
import interfaces.XMLRMIMethod;
import interfaces.XMLRMISerializable;

import org.w3c.dom.Element;

import tools.XMLTool;
import type.Base64;
import type.IMyDate;
import type.MyDate;

/**
 * Implémentation de l'objet Objet1, c'est un objet sérialisable
 * @author Kevin Pozderec, Faycal Abka
 */
public class Objet1 implements IObjet1,XMLRMISerializable {	
	
	public int oid;
	public String type;
	
	/*Cas d'un objet xmlrmi dans un objet xmlrmi : Non fonctionnel
	 * @XMLRMIField(serializationName="h",serializationType="object")
	public IHorloge h;*/
	
	
	@XMLRMIField(serializationType="base64",serializationName="bx64")
	public Base64 bx64;
	
	@XMLRMIField(serializationType="dateTime.iso8601",serializationName="date")
	public IMyDate date;
	
	@XMLRMIField(serializationType="array",serializationName="tableauInt")
	public int [] tableauInt = {1,2,3,4,5,6};
	
	public Objet1(){
		this.oid = (int) (Math.random() * 1000);	
		this.type = "IObjet1";
		/*h = new Horloge();*/
		date = new MyDate("2012","11","17","17","30","40");
		bx64 = new Base64("QUJCQUFEQUQ=");	
	}
	
	@Override
	@XMLRMIMethod(language="Java",code="public String affiche(int a, boolean b, String c, double d) { return \"a=\"+a+\",b=\"+b+\",c=\"+c+\",d=\"+d;}")
	public String affiche(int a, boolean b, String c, double d) {
		return "a="+a+",b="+b+",c="+c+",d="+d;
	}

	@Override
	public String toXML() {
		return XMLTool.toXML(this, oid,type);
	}

	@Override
	public void updateFromXML(Element theXML) {
		System.out.println("\nClient -> update : ");
		System.out.println("Pas de modification pour cet objet");			
	}


}
